#include <stdio.h>

int xja_add(int x, int y){
	int sum = x + y;
	return sum;
}

int xja_sub(int x, int y){
	int sum = x - y;
	return sum;
}

int main(int argc, const char *argv[])
{
	int a = 10;
	int b = 20;

	// 定义了一个函数指针 指针变量名叫 p
	// 指针能指向一个 返回值为 int  形参为 (int, int) 的函数
	int (*p)(int, int) = NULL;
	p = xja_add;	// 函数名就是函数的首地址
	//int (*p)(int, int) = xja_add; // 初始化的写法
	
	// 当函数指针指向函数后 就可以通过函数指针来调用函数了
	printf("%d\n", xja_add(a, b)); // 30
	printf("%d\n", p(a, b)); // 30
	printf("%d\n", p(50, 100)); // 150
	
	// 函数指针也是指针 也可以改变指向
	p = xja_sub;
	printf("%d\n", xja_sub(a, b)); // -10
	printf("%d\n", p(a, b)); // -10
	printf("%d\n", p(50, 100)); // -50

	return 0;
}
